package com.tanhua.server.controller;

import com.tanhua.commons.utils.JwtUtils;
import com.tanhua.model.domain.UserInfo;
import com.tanhua.server.interceptor.UserHolder;
import com.tanhua.server.service.UserInfoService;
import com.tanhua.server.service.UserService;
import io.jsonwebtoken.Claims;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.Map;

@RestController
@RequestMapping("/user")
public class LoginController {


    @Autowired
    private UserService userService;

    @Autowired
    private UserInfoService userInfoService;

    /**
     * 1、发送短信验证码
     * 请求方式：post
     * 请求路径：user/login
     * 参数：Map集合 @RequestBody
     * 返回值：void  ：需要通过ResponseEntity封装
     */
    @PostMapping("/login")
    public ResponseEntity login(@RequestBody Map map) {
        //1、获取手机号码
        String phone = (String) map.get("phone");
        //2、发送验证码
        userService.login(phone);
        //3、返回
        return ResponseEntity.ok(null);
    }

    /**
     * 2、用户验证码登录方式
     * 请求方式：Post
     * 请求地址：/loginVerification
     * 请求参数：phone，verificationCode  （@RequestBody）
     * 返回值：
     * token，isNew
     */
    @PostMapping("/loginVerification")
    public ResponseEntity loginVerification(@RequestBody Map map) {
        //1、获取请求参数
        String phone = (String) map.get("phone");
        String code = (String) map.get("verificationCode");
        //2、调用Service登录，返回Map集合（token，isNew）
        Map retMap = userService.loginVerification(phone, code);
        //3、返回
        return ResponseEntity.ok(retMap);
    }
    /**
     * 3、保存用户信息
     * /user/loginReginfo
     * UserInfo
     */
    @PostMapping("/loginReginfo")
    public ResponseEntity loginReginfo(@RequestBody UserInfo userInfo ) {
        //2、向userinfo中设置用户id
        userInfo.setId(UserHolder.getUserId());
        //3、调用service
        userInfoService.save(userInfo);
        return ResponseEntity.ok(null);
    }

    /**
     * 4、更新(添加)用户头像
     * loginReginfo/head  Post
     * 文件参数：headPhoto
     */
    @PostMapping("/loginReginfo/head")
    public ResponseEntity head(MultipartFile headPhoto) {
        // 调用service，更新用户头像
        userInfoService.updateHead(headPhoto, UserHolder.getUserId());
        return ResponseEntity.ok(null);
    }
}
